package 行为型模型.观察者模式;

/**
 * 观察者模式：主要用于1：N的通知
 * 当一个对象（消息发布）(目标对象subject或objservable)的状态变化时，他需要及时告知一系列(消息订阅)(观察者对象，observer)令他们做出响应
 *
 * 通知观察者的方式：
 * 推：每次都会把通知以广播方式发送给所有观察者，所有观察者只能被动接收
 * 拉：观察者只要知道有情况即可，至于什么时候获取内容，获取什么内容，都可以自主决定
 */
public class Client {
    public static void main(String[] args) {
        ASubject subject=new ASubject();
        AObserver observer=new AObserver();
        AObserver observer1=new AObserver();
        AObserver observer2=new AObserver();
        subject.registerObserver(observer);
        subject.registerObserver(observer1);
        subject.registerObserver(observer2);
        subject.setState(100);
        System.out.println("...............");
        int mystate = observer.getMystate();
        int mystate1 = observer1.getMystate();
        int mystate2 = observer2.getMystate();
        System.out.println(mystate);
        System.out.println(mystate1);
        System.out.println(mystate2);
    }
}
